﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Seguridad.Encriptación;

namespace Migrazao
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Console.Title = "MIGRAZAO HA COMENZADO";
                Encriptador encriptador = new Encriptador("fjtt63qw@psk35", "t@lPsk", "MD5", 1, "@1B2c3D4e5F6g7H8", 128);
                CuentasDataContext cuentas = new CuentasDataContext();
                CuentasWebDataContext cuentasWeb = new CuentasWebDataContext();

                foreach (Dominio dominioActual in cuentas.Dominios.ToList())
                {
                    Console.Clear();
                    Console.WriteLine("DOMINIO: " + dominioActual.Descripción);

                    CW_Dominio nuevoDominio = new CW_Dominio();
                    nuevoDominio.Dominio = encriptador.Encriptar(dominioActual.Descripción);

                    Console.WriteLine("ENCRIPTANDO: " + nuevoDominio.Dominio);

                    if (cuentasWeb.CW_Dominios.Where(d => d.Dominio.Equals(nuevoDominio.Dominio)).Count() == 0)
                    {
                        Console.WriteLine("INSERTANDO...");
                        cuentasWeb.CW_Dominios.InsertOnSubmit(nuevoDominio);
                    }
                    else
                        Console.WriteLine("YA EXISTE =(");
                }
                cuentasWeb.SubmitChanges();

                foreach (Cuenta cuentaActual in cuentas.Cuentas)
                {
                    Console.Clear();

                    if (cuentaActual.Dominio == null)
                        continue;

                    Console.WriteLine("CUENTA:" + cuentaActual.UserId + " " + cuentaActual.Dominio.Descripción);
                    CW_Cuenta nuevaCuenta = new CW_Cuenta();
                    nuevaCuenta.NombreUsuario = encriptador.Encriptar(cuentaActual.UserId);
                    nuevaCuenta.Contraseña = encriptador.Encriptar(cuentaActual.Password);
                    nuevaCuenta.Comentarios = cuentaActual.Comentarios;

                    string dominioEncriptado = encriptador.Encriptar(cuentaActual.Dominio.Descripción);
                    nuevaCuenta.CW_Dominio = cuentasWeb.CW_Dominios.Where(d => d.Dominio.Equals(dominioEncriptado)).FirstOrDefault();

                    if (cuentasWeb.CW_Cuentas.Where(c => c.NombreUsuario.Equals(nuevaCuenta.NombreUsuario) && c.IdDominio == nuevaCuenta.IdDominio).Count() == 0)
                    {
                        Console.WriteLine("ENCRIPTANDO...");
                        cuentasWeb.CW_Cuentas.InsertOnSubmit(nuevaCuenta);
                    }
                    else
                        Console.WriteLine("CHA EXISTE =(...");
                }

                cuentasWeb.SubmitChanges();
            }
            catch (Exception ex)
            {
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }

            Console.ReadKey();
        }
    }
}
